/*
 *   Copyright (c) 2010-2022, SIUFUNG
 */
package net.siufung.market.base.tenant.controller.assembler;

import com.google.common.collect.Lists;
import net.siufung.core.utils.CopyUtil;
import net.siufung.market.base.tenant.controller.model.vo.TenantVo;
import net.siufung.market.base.tenant.mapper.entity.Tenant;
import net.siufung.market.base.tenant.mapper.entity.TenantProfile;
import org.springframework.util.CollectionUtils;

import java.util.List;
import java.util.Objects;

/**
 *
 * 系统租户表 持久层展示层组装器
 *
 * @author 陈建峰
 * @since 2022-07-06 14:45:08
 */
public class TenantAssembler {

    /**
     * Tenant 转换成 TenantVo
     * @param tenant 数据库实体
     * @return TenantVo 视图
     */
    public static TenantVo from(Tenant tenant){
        if(!Objects.isNull(tenant)){
            TenantVo tenantVo = new TenantVo();
            CopyUtil.copyProperties(tenant, tenantVo);
            return tenantVo;
        }
        return null;
    }

    /**
     * Tenant 转换成 TenantVo
     * @param tenant 数据库实体
     * @return TenantVo 视图
     */
    public static TenantVo from(Tenant tenant, TenantProfile tenantProfile){
        if(!Objects.isNull(tenant)){
            TenantVo tenantVo = new TenantVo();
            CopyUtil.copyProperties(tenant, tenantVo);
            CopyUtil.copyProperties(tenantProfile, tenantVo);
            return tenantVo;
        }
        return null;
    }

    /**
     * TenantList 转换成 TenantVoList
     * @param tenantList 数据库实体集合
     * @return List<TenantVo> 视图集合
     */
    public static List<TenantVo> fromList(List<Tenant> tenantList){
        List<TenantVo> tenantVoList = Lists.newArrayList();
        if(!CollectionUtils.isEmpty(tenantList)){
            TenantVo tenantVo;
            for (Tenant tenant: tenantList) {
                tenantVo = new TenantVo();
                CopyUtil.copyProperties(tenant, tenantVo);
                tenantVoList.add(tenantVo);
            }
        }
        return tenantVoList;
    }

    /**
     * TenantList 转换成 TenantVoList
     * @param tenantList 数据库实体集合
     * @return List<TenantVo> 视图集合
     */
    public static List<TenantVo> fromList(List<Tenant> tenantList, List<TenantProfile> tenantProfileList){
        List<TenantVo> tenantVoList = Lists.newArrayList();
        if(!CollectionUtils.isEmpty(tenantList)){
            TenantVo tenantVo;
            for (Tenant tenant: tenantList) {
                tenantVo = new TenantVo();
                CopyUtil.copyProperties(tenant, tenantVo);
                for (TenantProfile tenantProfile: tenantProfileList){
                    if(tenant.getId().equals(tenantProfile.getId())){
                        CopyUtil.copyProperties(tenantProfile, tenantVo);
                        break;
                    }
                }
                tenantVoList.add(tenantVo);
            }
        }
        return tenantVoList;
    }
}

